package com.qumitech.visualnovel.service.skill;

import com.qumitech.visualnovel.model.common.BaseRsp;
import com.qumitech.visualnovel.pubdef.dto.skill.*;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * SkillService
 *
 * @author ywxie
 * @date 2020/1/14 10:31
 */
public interface SkillService {

    /**
     * 技能配置列表
     * @return 技能配置信息
     */
    BaseRsp listSkillConfig();

    /**
     * 获取大神认证审核列表
     * @param paramMap 查询参数
     * @return 大神认证审核信息
     */
    BaseRsp listSkillVerifyAdmin(Map<String, String> paramMap);

    /**
     * 更新大神认证审核状态
     * @param updateDTO 更新参数
     * @return 更新状态
     */
    BaseRsp updateSkillVerifyAdmin(SkillVerifyAdminUpdateDTO updateDTO);

    /**
     * 获取用户技能列表
     * @param paramMap 查询参数
     * @return 用户技能信息
     */
    BaseRsp listUserSkillAdmin(Map<String, String> paramMap);

    /**
     * 导出用户技能列表
     * @param paramMap 查询参数
     * @param response 返回 body
     * @return 用户技能信息
     */
    Map<String, Object> listUserSkillAdminExport(Map<String, String> paramMap, HttpServletResponse response);

    /**
     * 获取大神信息列表
     * @param paramMap 查询参数
     * @return 大神信息
     */
    BaseRsp listGodAdmin(Map<String, String> paramMap);

    BaseRsp updateGodAdmin(SkillGodUpdateAdminDTO dto);

    /**
     * 导出大神信息列表
     * @param paramMap 参数
     * @param request 请求实体
     * @return 导出 Excel
     */
    Map<String, Object> listGodAdminExport(Map<String, String> paramMap, HttpServletResponse request);

    /**
     * 获取用户技能/大神限制列表
     * @param paramMap
     * @return
     */
    BaseRsp listSkillForbiddenAdmin(Map<String, String> paramMap);

    /**
     * 更新大神/技能限制状态
     * @param updateDTO
     * @return
     */
    BaseRsp updateSkillForbiddenAdmin(SkillForbiddenAdminUpdateDTO updateDTO);

    BaseRsp listGodRecommendAdminByConditions(Map<String, String> paramMap);

    BaseRsp addGodRecommendAdmin(GodRecommendAdminAddDTO addDTO);

    BaseRsp updateGodRecommendAdmin(GodRecommendAdminUpdateDTO updateDTO);

    BaseRsp batchSetSkillPricesAdmin(Long uid, Integer skillId, String prices, Integer orderCount);

    BaseRsp getSkillPriceAdmin(Long uid, Integer skillId);
}
